package com.elinshaw {

  package navigation {

    class Navigator {
      val map = new StarMap

      /**
       * 伴生对象
       */
      object companion {
        private def a = 10

        def b() {
          println("伴生对象方法")
        }
      }

    }

    class StarMap

  }

  class Ship {
    val p1 = new navigation.Navigator
  }

  package fleets {

    class Fleet {
      def addShip() = {
        new Ship
      }
    }

  }


}

/**
 * C#打包语法
 * 包和目录可以不一致
 * 最终以包名为准
 * 同一个文件声明多个包
 * import a.b.c._按需引入 等价于 import a.b.c.{_}
 * import导入语法跟python一样可以出现在任意位置
 * 重命名引入
 * 可以隐藏某些被引入的成员
 * 引用对象（单例还是常规对象）不仅是包
 * import Food.{color=>newColor,price}只引入color和price成员，color被重命名
 * import Food.{color=>_,_}引入的名称删除color
 *
 * 默认修饰符public
 *
 * static用伴生对象
 *
 * 默认隐式引入java.lang._
 * scala._
 * Predef._
 */


